package com.gxa.p2p.service.impl;

import com.gxa.p2p.mapper.InvestRecordMapper;

import com.gxa.p2p.pojo.InvestRecord;

import com.gxa.p2p.service.InvestmentUserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;


/**
 * TODO
 *投资人信息查询的各种实现方法
 * @author 瓶子
 * @Date 2020/8/1
 */
@Service("InvestmentUserService")
public class InvestmentUserServiceImpl implements InvestmentUserService {
    @Resource
    InvestRecordMapper investRecordMapper;

    /**
     * //查询所有投资人的信息,分页显示
     * @param map 传入的是键值对的分页变量，page，limit
     * @return 查询到的信息集合
     */

    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<InvestRecord> find(Map<String,Object> map) {

        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");//页码处理
        map.put("page",page);//处理的页码，再写入同一个键值
        List<InvestRecord> investRecords = investRecordMapper.findAllInvest(map);//调用Mapper中的分页查询所有个人信息的方法
        return investRecords;//返回所有查询的信息
    }

    /**
     * 投资用户数据总量的方法
     * @return 一个数据总量
     */
    @Override
    public Integer counts( Map<String,Object> map) {
        Integer counts = investRecordMapper.counts(map);//查询投资用户数据总量
        return counts;
    }

    //条件查询，通过电话或者姓名查询投资人个人信息
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<InvestRecord> findByPhoneNumOrName(Map<String,Object> map) {


        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");//页码处理
        map.put("page",page);//处理的页码，再写入同一个键值
        List<InvestRecord> byPhoneNumOrName = investRecordMapper.findByPhoneNumOrName(map);//调用Mapper中的查询投资人姓名或电话的方法
        return byPhoneNumOrName;
    }



    /**
     * 查询条件为 实名已认证或未认证的方法
     * @param map 传入键值对的认证状态，
     * @return 返回查询到的对象
     */
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<InvestRecord> findByVerify(Map<String,Object> map) {
        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");//页码处理
        map.put("page",page);//处理的页码，再写入同一个键值
        List<InvestRecord> byVerify = investRecordMapper.findByVerify(map);//调用Mapper中的查询认证的方法，传入的变量为认证的状态
        return byVerify;//返回查询的对象的集合
    }



    /**
     * 方法：查询投资用户的来源 的方法
     * @param map 用户来源的变量，键值对处理
     * @return 返回查询到的对象集合
     */
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<InvestRecord> findBySource(Map<String,Object> map) {

        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");//页码处理
        map.put("page",page);//处理的页码，再写入同一个键值
        List<InvestRecord> investSource = investRecordMapper.findBySource(map);//调用Mapper中的查询用户来源的方法，变量source为用户来源
        return investSource;//返回查询的对象的集合
    }


    /**
     * 方法:投资用户个人信息的模糊查询
     * @param map 查询的变量值，键值对的方式
     * @return 返回查询到的对象的集合，
     */
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS,isolation = Isolation.DEFAULT)
    @Override
    public List<InvestRecord> findByLike(Map<String,Object> map) {

        Integer  page =((Integer) map.get("page")-1)*(Integer)map.get("limit");//页码处理
        map.put("page",page);//处理的页码，再写入同一个键值
        List<InvestRecord> byLike = investRecordMapper.findByLike(map);//调用Mapper投资用户模糊查询的方法，变量like 模糊查询的条件值
        return byLike;
    }





}
